from django.db import models


# Create your models here.

# 先在models中写一个类
class User(models.Model):
    # 自增id 由于一般表都有id，会默认创建id自增主键，可以不写
    # id int primary_key auto_increment
    id = models.AutoField(primary_key=True)
    # username varchar(32)  必须填写max_length
    username = models.CharField(max_length=32, verbose_name='用户名')
    # password int  verbose_name注释
    # password = models.IntegerField(verbose_name='密码')
    password = models.CharField(max_length=32, verbose_name='密码')

    # choice参数 存储可以枚举的字段
    gender_choices = (
        (1, '男'),
        (2, '女'),
        (3, '其他'),
    )
    gender = models.IntegerField(choices=gender_choices, default=1)

    def __str__(self):
        return self.username


# orm创建表关系
class Book(models.Model):
    title = models.CharField(max_length=32, verbose_name='标题')
    # 总共8位，小数2位
    price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name='价格')
    """
    图书与出版社 一对多 书是多的一方 外键放在书表里面
    """
    publish = models.ForeignKey(to='Publish')
    """
    图书与作者 多对多  外键放在查询频率较高表里面
    """
    # authors是一个虚拟字段 主要告诉orm 书和作者是多对多关系
    # 让orm自动为你创建低三张关系表
    authors = models.ManyToManyField(to='Author')
    stock = models.IntegerField(verbose_name='库存')
    sold = models.IntegerField(verbose_name='卖出')


class Publish(models.Model):
    name = models.CharField(max_length=32, verbose_name='出版社名称')
    addr = models.CharField(max_length=32, verbose_name='出版社地址')


class Author(models.Model):
    name = models.CharField(max_length=32, verbose_name='作者姓名')
    age = models.IntegerField(verbose_name='年龄')
    """
    作者与作者详情 一对一 作者是查询多的一方 外键放在作者表里面
    """
    author_detail = models.OneToOneField(to='AuthorDetail')


class AuthorDetail(models.Model):
    phone = models.CharField(max_length=32, verbose_name='电话')
    addr = models.CharField(max_length=32, verbose_name='作者地址')
